vulkan: Fix mask shader to premultiply color
authorBenjamin Otte <otte@redhat.com>
Fri, 1 Dec 2017 13:44:09 +0000 (14:44 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 2 Dec 2017 15:21:58 +0000 (16:21 +0100)
The inColor wasn't premultiplied, so the resulting colors were wrong
with translucent borders.

gsk/resources/vulkan/mask-clip-rounded.frag.spv
gsk/resources/vulkan/mask-clip.frag.spv
gsk/resources/vulkan/mask.frag
gsk/resources/vulkan/mask.frag.spv

index 0791cb599b9081991da7c870563c8b284f852720..0e5fd97626d0bd4e8acd2411869c9a57a0299f49 100644 (file)
Binary files a/gsk/resources/vulkan/mask-clip-rounded.frag.spv and b/gsk/resources/vulkan/mask-clip-rounded.frag.spv differ
index 85fc5f01d5c3ce6541774b51795a71567fcee015..5e321e2f287fe37db52a0355b33a55ea8c02e271 100644 (file)
Binary files a/gsk/resources/vulkan/mask-clip.frag.spv and b/gsk/resources/vulkan/mask-clip.frag.spv differ
index f713371bc61a3bf15c9b34625ac0109622e0e596..81f6833ef29b504f1f835aec3e13b4bd597fb6a9 100644 (file)
@@ -12,5 +12,5 @@ layout(location = 0) out vec4 color;
 
 void main()
 {
-  color = clip (inPos, vec4(inColor.rgb, texture(inTexture, inTexCoord).a));
+  color = clip (inPos, vec4(inColor.rgb * inColor.a, inColor.a) * texture(inTexture, inTexCoord).a);
 }
index 85fc5f01d5c3ce6541774b51795a71567fcee015..5e321e2f287fe37db52a0355b33a55ea8c02e271 100644 (file)
Binary files a/gsk/resources/vulkan/mask.frag.spv and b/gsk/resources/vulkan/mask.frag.spv differ